package com.base.listNode;

/**
 * 剑指 Offer 06. 从尾到头打印链表
 *
 * 输入一个链表的头节点，从尾到头反过来返回每个节点的值（用数组返回）。
 */
public class ReversePrint {

    public static  int[] reversePrint(ListNode head){
        /**
         * 先用头插法反转链表 .同样的也可以用栈来反转链表。相对于栈，头插法更节省空间。
         */
        ListNode dummy = new ListNode();
        int lenth = 0;
        while (head!=null){
            ListNode cur =head;
            // 注意这里要先移动head.
            head = head.next;
            cur.next = dummy.next;
            dummy.next = cur;

            lenth++;
        }
        int[] array = new int[lenth];
        ListNode cur = dummy.next;
        for (int i = 0; i < lenth; i++) {
            array[i] = cur.val;
            cur = cur.next;

        }
        return array;
    }

    public static void main(String[] args) {
        ListNode head = new ListNode(1,new ListNode(3,new ListNode(2,null)));
        reversePrint(head);
    }

}
